﻿Imports SIAVU.Dominio

Namespace Presentacion

    Partial Public Class ConfirmarActividades
        Inherits System.Web.UI.Page

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not (Page.IsPostBack) Then
                '//Verifico que clase de usuario es el que esta logueado
                If (DirectCast(Me.Master, Maestra).RolUsuario = Dominio.ERol.Mesa) Then
                    pnlMesaTripulantes.Visible = True
                    CargarGrillas()
                Else
                    pnlTripulante.Visible = True
                    Session("UsuarioIDConfirmarActividades") = Session("UsuarioID")
                    CargarActividadesHoyManana()
                End If
            End If
        End Sub

#Region "Eventos"

        Protected Sub btnVolver_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnVolver.Click
            pnlMesaTripulantes.Visible = True
            pnlTripulante.Visible = False
            btnVolver.Visible = False
        End Sub

        Protected Sub btnVerDetalle_Click(ByVal sender As Object, ByVal e As EventArgs)
            Try
                pnlMesaTripulantes.Visible = False
                Session("UsuarioIDConfirmarActividades") = CInt(DirectCast(sender, DevExpress.Web.ASPxEditors.ASPxButton).CommandArgument)
                pnlTripulante.Visible = True
                btnVolver.Visible = True
                CargarActividadesHoyManana()

            Catch ex As Exception
                pnlMesaTripulantes.Visible = True
                pnlTripulante.Visible = False
                Throw
                'TODO Mandar a pagina de error
            End Try

        End Sub

        Protected Sub btnDarOKHoy_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDarOKHoy.Click
            ConfimarActividad(CLng(lblActividadHoyID.Text))
        End Sub

        Protected Sub btnNoDarOKHoy_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNoDarOKHoy.Click
            NoConfimarActividad(CLng(lblActividadHoyID.Text))
        End Sub

        Protected Sub btnDarOKManana_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDarOKManana.Click
            ConfimarActividad(CLng(lblActividadMananaID.Text))
        End Sub

        Protected Sub btnNoDarOKManana_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNoDarOKManana.Click
            NoConfimarActividad(CLng(lblActividadMananaID.Text))
        End Sub

#End Region

#Region "Metodos"

        Private Sub CargarGrillas()
            Try
                Dim oEntityManager As New EntityManager

                gvActividadesHoy.DataSource = oEntityManager.GetUsuariosConActividadesByFecha(Date.Now, ETipoProgramacion.PlanVuelo)
                gvActividadesManana.DataSource = oEntityManager.GetUsuariosConActividadesByFecha(Date.Now.AddDays(1), ETipoProgramacion.PlanVuelo)

                gvActividadesHoy.AutoGenerateColumns = False
                gvActividadesManana.AutoGenerateColumns = False

                gvActividadesHoy.DataBind()
                gvActividadesManana.DataBind()
            Catch ex As Exception

            End Try
        End Sub

        Protected Function GetImageURL(ByVal EstadoActividad As String)
            Select Case EstadoActividad
                Case EEstadoActividad.Confirmada.ToString
                    Return "~/Imagenes/EstadoActividad/ActividadConfirmada.png"
                Case EEstadoActividad.NoConfirmada.ToString
                    Return "~/Imagenes/EstadoActividad/ActividadNoConfirmada.png"
                Case EEstadoActividad.Desconocido.ToString
                    Return "~/Imagenes/EstadoActividad/ActividadDesconocida.png"
                Case Else
                    Return ""
            End Select
        End Function

        Private Sub CargarActividadesHoyManana()
            Dim oUsuario As New Usuario
            Dim oActividades As IList(Of Actividad) = oUsuario.getActividadesProgramacionByPeriodo(Session("UsuarioIDConfirmarActividades"), Date.Now, ETipoProgramacion.PlanVuelo)
            Dim oActividad As Actividad
            If oActividades IsNot Nothing Then

                oActividad = FindActividadByFechaInicio(oActividades, Date.Now)
                If oActividad IsNot Nothing Then
                    GetDescripcionByActividad(oActividad, True)
                Else
                    OcultarControlesActividad(True)
                End If

                oActividad = FindActividadByFechaInicio(oActividades, Date.Now.AddDays(1))
                If oActividad IsNot Nothing Then
                    GetDescripcionByActividad(oActividad, False)
                Else
                    OcultarControlesActividad(False)
                End If
            Else
                OcultarControlesActividad(True)
                OcultarControlesActividad(False)
            End If
        End Sub

        Private Sub OcultarControlesActividad(ByVal Hoy As Boolean)
            If Hoy Then
                lblActividadHoy.Text = "<b>Sin Actividades</b>"
                btnDarOKHoy.Visible = False
                btnNoDarOKHoy.Visible = False
            Else
                lblActividadManana.Text = "<b>Sin Actividades</b>"
                btnDarOKManana.Visible = False
                btnNoDarOKManana.Visible = False
            End If
        End Sub

        Private Function FindActividadByFechaInicio(ByVal oActividades As IList(Of Actividad), ByVal Fecha As DateTime) As Actividad
            For Each oActividadAux As Actividad In oActividades
                If oActividadAux.FechaInicioFicticia = Fecha.ToShortDateString Then
                    Return oActividadAux
                End If
            Next
            Return Nothing
        End Function

        Private Sub GetDescripcionByActividad(ByVal oActividad As Actividad, ByVal Hoy As Boolean)
            Dim strActividad As String = String.Empty

            Select Case oActividad.GetType().ToString
                Case Type.GetType("SIAVU.Dominio.ActividadPosta").ToString
                    Dim oActividadPosta As ActividadPosta = DirectCast(oActividad, ActividadPosta)

                    strActividad = "<b>Vuelo: </b>" + oActividadPosta.Posta.VueloIda.CiudadOrigen.Descripcion + " - " + _
                                            oActividadPosta.Posta.VueloIda.CiudadDestino.Descripcion + "<br/><b>Avión: </b>" + _
                                            oActividadPosta.Posta.VueloIda.Avion.Descripcion + "<br/><b>Salida: </b>" + _
                                            oActividadPosta.FechaInicio.ToString + "<br/><b>Llegada: </b>" + oActividadPosta.FechaFin.ToString

                Case Type.GetType("SIAVU.Dominio.ActividadDiaLibre").ToString
                    strActividad = "<b>Día Libre</b>"

                Case Type.GetType("SIAVU.Dominio.ActividadDiaSinProgramar").ToString
                    strActividad = "<b>Día Sin Programar</b>"

                Case Type.GetType("SIAVU.Dominio.ActividadGuardia").ToString
                    strActividad = "<b>Día de Guardia</b>"

            End Select

            If Hoy Then
                btnDarOKHoy.Visible = True
                btnNoDarOKHoy.Visible = True
                lblActividadHoy.Text = strActividad
                lblActividadHoyID.Text = oActividad.ActividadID
                If oActividad.EstadoActividad <> EEstadoActividad.Desconocido Then
                    btnDarOKHoy.Enabled = False
                    btnNoDarOKHoy.Enabled = False
                Else
                    btnDarOKHoy.Enabled = True
                    btnNoDarOKHoy.Enabled = True
                End If
            Else
                btnDarOKManana.Visible = True
                btnNoDarOKManana.Visible = True
                lblActividadManana.Text = strActividad
                lblActividadMananaID.Text = oActividad.ActividadID
                If oActividad.EstadoActividad <> EEstadoActividad.Desconocido Then
                    btnDarOKManana.Enabled = False
                    btnNoDarOKManana.Enabled = False
                Else
                    btnDarOKManana.Enabled = True
                    btnNoDarOKManana.Enabled = True
                End If
            End If
        End Sub

        Private Sub ConfimarActividad(ByVal ActividadID As Long)
            Dim oActividad As New Actividad
            oActividad.ActividadID = ActividadID
            If oActividad.confirmarActividad() Then
                Session("MensajeInformacion") = "Ha confirmado la actividad exitosamente"
                Response.Redirect("MenuPrincipal.aspx", False)
            Else
                'TODO ir a pagina de error

            End If
        End Sub

        Private Sub NoConfimarActividad(ByVal ActividadID As Long)
            Dim oActividad As New Actividad
            oActividad.ActividadID = ActividadID
            If oActividad.noConfirmarActividad() Then
                Session("MensajeInformacion") = "NO ha confirmado la actividad exitosamente"
                Response.Redirect("MenuPrincipal.aspx", False)
            Else
                'TODO ir a pagina de error
            End If
        End Sub


#End Region

    End Class

End Namespace
